﻿function getContestStatus(cid) {
	if (refreshTab('contestStatus'))
		return;
	var pageSize = 40;
	var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : url.getContestStatus
						}),
				reader : new Ext.data.JsonReader({
							root : 'result',
							totalProperty : 'total',
							id : 'rid'
						}, ['username', 'status', 'submitTime', 'memory',
								'time', 'rid', 'ps'])
			});
	store.load({
				params : {
					cid : cid,
					start : 0,
					limit : pageSize
				}
			})

	var cm = new Ext.grid.ColumnModel([{
				header : 'RID',
				sortable : false,
				dataIndex : 'rid',
				width : 30
			}, {
				header : 'PS',
				sortable : false,
				dataIndex : 'ps',
				width : 50
			}, {
				header : 'Player',
				sortable : false,
				dataIndex : 'username',
				width : 50
			}, {
				header : 'SubmitTime',
				sortable : false,
				dataIndex : 'submitTime',
				width : 50
			}, {
				header : 'Status',
				sortable : false,
				dataIndex : 'status',
				width : 50
			}, {
				header : 'ExeTime',
				sortable : false,
				dataIndex : 'time',
				width : 50
			}, {
				header : 'ExeMemory',
				sortable : false,
				dataIndex : 'memory',
				width : 50
			}]);
	var sm = new Ext.grid.RowSelectionModel({
				singleSelect : true
			});

	var toolbar = new Ext.Toolbar();
	toolbar.add(new Ext.Button({
				text : '刷新',
				iconCls : 'refresh-icon',
				handler : function() {
					store.reload();
				}
			}))
	if (sys.god) {
		var godbuttons = new Ext.Button({
					text : '重判',
					iconCls : 'add-icon',
					disabled : true,
					handler : function() {
						rejudge();
					}
				})
		toolbar.add(godbuttons);
	}

	var pagebar = new Ext.PagingToolbar({
				pageSize : pageSize,
				store : store,
				displayInfo : true,
				emptyMsg : '当前没有状态。',
				displayMsg : '当前显示第 {0} - {1} 状态，共 {2} 状态。',
				plugins : new Ext.ux.SlidingPager()
			});

	var grid = new Ext.grid.GridPanel({// 面板主控件
		title : 'ContestStatus',
		iconCls : 'statuslist-icon',
		closable : true,
		region : 'center',
		loadMask : {
			msg : '载入中...'
		},
		viewConfig : {
			forceFit : true
		},
		store : store,
		cm : cm,
		sm : sm,
		tbar : toolbar
	});
	sm.on('selectionchange', onSelect);
	addTab(grid);

	function getSelect() {
		if (sm.getCount() == 0)
			return null;
		return sm.getSelected();
	}
	function onSelect() {
		var record = getSelect();
		var disable = !record;
		if (sys.god) {
			godbuttons.setDisabled(disable);
		}
	}

	function rejudge() {
		var record = getSelect();
		if (!record)
			return;
		confirmx('您确定要重判状态 - ' + record.data.rid + ' 吗？<br />对应的统计会一并更新。',
				function() {
					ajax({
								url : url.contestRejudgeStatus,
								params : {
									rid : record.data.rid
								},
								success : function(obj) {
									alertx('服务器接受了重判请求，正在重判...');
									refreshTab('contestStatus');
									store.reload();
								}
							})
				});
	}
}